package test.demo;

/***
 ** @category 单例-枚举
 ** @author qing.yunhui
 ** @email: qingyh@glodon.com
 ** @createTime: 2021-12-30 16:26
 **/
public class SingletonTest08 {
    public static void main(String[] args) {
        Singleton08 instance = Singleton08.INSTANCE;
        Singleton08 instance2 = Singleton08.INSTANCE;
        System.out.println(instance == instance2);
        System.out.println(instance.hashCode());
        System.out.println(instance2.hashCode());
        instance.sayOK();
		/*优缺点说明：
		1) 这借助 JDK1.5 中添加的枚举来实现单例模式。不仅能避免多线程同步问题，而且还能防止反序列化重新创建新的对象。
		2) 这种方式是 Effective Java 作者 Josh Bloch 提倡的方式
		3) 结论：推荐使用*/
    }
}
//使用枚举，可以实现单例, 推荐
enum Singleton08 {
    INSTANCE; //属性
    public void sayOK() { System.out.println("ok~"); }
}